#!/bin/bash

# OpenWhisk 集群配置脚本
# 功能：
# 1. 修改 cluster.yaml 中的 API 主机和端口配置
# 2. 执行 Helm 安装命令

set -euo pipefail

# 默认配置
DEFAULT_API_HOST="10.119.6.154"
DEFAULT_API_PORT=31001

# 解析命令行参数
while getopts ":a:p:" opt; do
  case $opt in
    a) API_HOST="$OPTARG" ;;
    p) API_PORT="$OPTARG" ;;
    \?) echo "无效选项: -$OPTARG" >&2; exit 1 ;;
    :) echo "选项 -$OPTARG 需要参数" >&2; exit 1 ;;
  esac
done

# 设置默认值
API_HOST=${API_HOST:-$DEFAULT_API_HOST}
API_PORT=${API_PORT:-$DEFAULT_API_PORT}

# 路径配置
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
CLUSTER_FILE="$SCRIPT_DIR/openwhisk-kube-deploy/mycluster.yaml"
HELM_DIR="$SCRIPT_DIR/openwhisk-kube-deploy/helm"

# 检查文件是否存在
if [ ! -f "$CLUSTER_FILE" ]; then
  echo "错误: cluster.yaml 文件不存在: $CLUSTER_FILE"
  exit 1
fi

if [ ! -d "$HELM_DIR" ]; then
  echo "错误: helm 目录不存在: $HELM_DIR"
  exit 1
fi

# 备份原始文件
BACKUP_FILE="$CLUSTER_FILE.bak.$(date +%Y%m%d%H%M%S)"
cp "$CLUSTER_FILE" "$BACKUP_FILE"
echo "已创建备份文件: $BACKUP_FILE"

# 修改 cluster.yaml
echo "正在更新集群配置 (API: $API_HOST:$API_PORT)"

# 使用 sed 修改配置
sed -i "s/apiHostName: .*/apiHostName: $API_HOST/" "$CLUSTER_FILE"
sed -i "s/apiHostPort: [0-9]*/apiHostPort: $API_PORT/" "$CLUSTER_FILE"
sed -i "s/httpsNodePort: [0-9]*/httpsNodePort: $API_PORT/" "$CLUSTER_FILE"

# 执行 Helm 安装
echo "正在执行 Helm 安装..."
helm install owdev "$HELM_DIR/openwhisk" \
  -n openwhisk \
  --create-namespace \
  -f "$CLUSTER_FILE"

echo -e "\n=== 配置更新完成 ==="
echo "API 主机地址: $API_HOST"
echo "API 端口: $API_PORT"
echo "Helm 已使用更新后的配置部署"